#include <head.h>

sem_t sem;
void *sem_func_1(void *arg);

int main(int argc, char const *argv[])
{

    pthread_t tid;
    // 创建无名信号量
    sem_init(&sem, 0, 0);
    // 创建线程
    pthread_create(&tid, NULL, sem_func_1, NULL);

    printf("主线程工作....\n");
    sleep(1);
    printf("主线程工作结束\n");
    // 释放信号量
    sem_post(&sem);
    // 等待线程结束
    pthread_join(tid, NULL);
    return 0;
}

void *sem_func_1(void *arg)
{
    while (1)
    {
        printf("子线程等待中\n");
        // 等待信号量
        sem_wait(&sem);
        printf("子线程工作.....\n");
        sleep(1);
        sem_post(&sem); // 释放信号量
    }
}
